package d2_final_exam.d4_fourth_question;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class Demo01 {
    public static void main(String[] args) {
        //目标: 完成红包雨游戏的案例
        //1、创建一个集合用与存储生成的红包
        List<Integer> redEnvelope = new ArrayList<>();

        //2、创建一个随机数对象
        Random r = new Random();

        //3、开始循环生成1-30的红包, 由于是只占80% --> 200&0.8 = 160个
        //1.直接开循环
        for (int i = 0; i < 160; i++) {
            //2.生成一个红包的面值
            int money = r.nextInt(30) + 1;
            //3.然后存到集合中去
            redEnvelope.add(money);
        }

        //4.循环生成[31-100]的红包
        for (int i = 0; i < 40; i++) {
            //5.生成一个符合大红包范围的数值
            int money = r.nextInt(70) + 31;
            //6.将生成的红包存入到集合中去
            redEnvelope.add(money);
        }

        //3、将集合进行打乱, 使用Collections发方法
        Collections.shuffle(redEnvelope);//这样子,大小红包的顺序,就公平了

        //4、展示集合
        System.out.println(redEnvelope);

        //6、在定义一个集合用于记录,每个员工抢到的红包总钱数
        List<String> allMoney = new ArrayList<>();

        //5、由于每个员工独立的抢红包,所以要使用多线程
        //1.循环创建100个员工线程,进行抢红包
        for (int i = 1; i <=100; i++) {
            //2.将共享资源,传过去, 为每一个员工命名
            new RedThread(redEnvelope,allMoney,i + "员工").start();
        }

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        //8、输出一个标志代表活动结束
        System.out.println("活动结束");

        //7、输出每位员工抢到的总金额
        System.out.println(allMoney);

    }
}
